<?php

namespace App\Admin\Exports;

use App\Model\CallBase;
use Encore\Admin\Grid\Exporters\ExcelExporter;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class CallListExport extends ExcelExporter implements WithMapping, WithHeadings, ShouldAutoSize
{
    //这里是导出来的文件的名字和格式
    protected $fileName = '话单列表.xlsx';
    //这里是excel的标题
    public function headings(): array
    {
        return [
            '话单ID',
            '话单类型',
            '话单状态',
            '用户ID',
            '用户昵称',
            '女用户ID',
            '女用户昵称',
            '通话时长（分钟）',
            '发起时间',
            '结束时间'
        ];
    }

    public function map($data): array
    {   //这里是字段的值 如果是主表的数据 直接对象的形式就可以写出来
        //如果是关联的表的数据 可以通过data_get()去渲染
        //其他部分是枚举类字段值的语义化
        return [
            $data->id,
            CallBase::FROM_TYPE[$data->from] . ($data->call_mark == 2 ? '女用户呼叫' : ''),
            CallBase::STATUS[$data->status] ?? '-',
            $data->fromUser->user_profile_id,
            $data->fromUser->nick_name,
            $data->toUser->user_profile_id,
            $data->toUser->nick_name,
            $data->call_time < 10 ? 0 : ceil($data->call_time / 60),
            !$data->start_time ? '-' : date('Y-m-d H:i:s', $data->start_time),
            !$data->end_time ? '-' : date('Y-m-d H:i:s', $data->end_time)
        ];
    }
}
